package com.xxc.exam.service

import com.xxc.batis.service.CrudService
import com.xxc.exam.entity.CategoryEntity
import com.xxc.exam.entity.pojo.Category
import com.xxc.exam.entity.vo.CategoryVO
import java.math.BigInteger

interface CategoryService :CrudService<Category,BigInteger>{

    fun select(category: Category):List<CategoryVO>

    /**
     * 获取全路径分类名
     */
    fun getFullPathName(id:BigInteger):String?

    /**
     * 获取该id的所有祖先元素，通过parent属性递归获得
     */
    fun getParents(id:BigInteger):CategoryEntity

    /**
     * 如果不存在则插入分类，存在则获取分类
     */
    fun insertIfNotExist(category: Category):Category

    /**
     * 插入一个分类同时检查其父分类是否插入
     */
    fun insertCategory(category:CategoryEntity,ownerId:BigInteger)

    fun selectAllEntities(ownerId: BigInteger):List<CategoryVO>
}